#pragma once

#include <TFT_eSPI.h>
#include <WiFi.h>

#define WIDTH 240
#define HEIGHT 240
#define IMAGE_SIZE (WIDTH * HEIGHT * 2)  // RGB565，每像素 2 字节
#define TAIL_BYTE_1 0xAA
#define TAIL_BYTE_2 0xBB
#define TAIL_BYTE_3 0xCC

/**
 * @class Screen
 * @brief 控制 TFT 屏幕显示的类（一次接收整张图）
 */
class Screen {
public:
    Screen();
    ~Screen();

    void setup();
    void showStartupMessage(const String &msg);

    /**
     * @brief 接收整张图并显示
     * @param client TCP 客户端
     *
     * 阻塞接收整个 IMAGE_SIZE + 3 字节（尾标志），接收完成后一次性显示整张图。
     */
    void displayFullImage(WiFiClient &client);

private:
    TFT_eSPI tft;
    uint8_t* imageBuffer;  // 堆缓冲区，避免栈溢出
};